home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / comm / mail / YAMscripts.lha / GrabURL.rexx < prev    next >
OS/2 REXX Batch file  |  1997-06-29  |  5KB  |  149 lines

  1. /*                           GrabURL.rexx
  2.                            v1.5 - 29-Jun-97
  3.  
  4.    This script grabs all URLs from the current message and displays them
  5.    in a requester.  From that requester you can send the URL to your browser.
  6.    Currently supported browsers are AWeb, IBrowse and Voyager.
  7.    
  8.    All URLs which end with a character in variable dup_chars will be 
  9.    duplicated and displayed also without that character.
  10.  
  11.    The script requires rexxreqtools.library and reqtools.library.
  12.    
  13.    Send bug reports, comments and government secrets to knikulai@utu.fi
  14.    
  15.    Now you can find my scripts also at http://www.utu.fi/~knikulai/ARexx.html
  16.  
  17.    If you send a message with subject REQUEST INDEX, you'll get a list
  18.    of my AREXX scripts. REQUEST <filename> will get you the script you
  19.    want.
  20. */
  21. options results
  22. call addlib('rexxreqtools.library',0,-30,0)
  23. call addlib('rexxsupport.library',0,-30,0)
  24.  
  25. browser='run <>nil: Work:IBrowse/IBrowse'    /* Change this to suit your system */
  26. hotlist='Work:IBrowse/IBrowse-hotlist.html'    /* Link may be added to this file */
  27. dup_chars='.,!?"*%&)'    /* If one of these ends the URL, it will be duplicated */
  28. wid=70            /* how many characters of the URL is shown? */
  29. maxbut=17        /* How many buttons fit the screen ? */
  30. maxurl=17        /* How many lines of URLs fit the screen ? */
  31.       title='GrabURL.rexx by knikulai@utu.fi'
  32.   not_found='Sorry, could not find any URLs!'
  33. found_these='The following URLs were found:'
  34.   error_msg='Could not open file for reading!'
  35.    desc_txt='Enter description for' || '0a'x
  36. tags='rt_pubscrname=YAMSCREEN'  /* Change here the name of the screen YAM runs */
  37. NL='0a'x        /* newline */
  38. uc=0            /* URL-counter */
  39.  
  40. address 'YAM'
  41. GetMailInfo File
  42. fname=result
  43.  
  44. if open(msg,fname,'R') then do
  45.    do until eof(msg) | uc=maxurl
  46.       rivi=translate(readln(msg),' ','"')
  47.       rivi=rivi || '  '        /* Just making sure there is a space at the end */
  48.       do while uc<maxurl & (pos('FILE://',upper(rivi))>0 | pos('HTTP://',upper(rivi))>0 | pos('FTP://',upper(rivi))>0)
  49.           /* There might be several URLs on one line */
  50.       b=pos('HTTP://',upper(rivi))            /* beginning */
  51.       if b=0 then b=pos('FTP://',upper(rivi))
  52. /* Adding other types is easy, just add a line like this: */      
  53.       if b=0 then b=pos('FILE://',upper(rivi))
  54.       e=pos(' ',rivi,b)                /* ending space */
  55.       call AddURL(substr(rivi,b,e-b))        /* save URL */
  56.       do while pos(right(url.uc,1),dup_chars)>0 
  57.       /* Add another URL without the last character */
  58.           spare=left(url.uc,length(url.uc)-1)
  59.           call AddURL(spare)          
  60.           end
  61.       rivi=right(rivi,length(rivi)-e)
  62.           end /* do until pos('HTTP://'*/
  63.       end /* do until eof(msg) */
  64.    if uc=0 then
  65.        call rtezrequest(not_found,,title,tags)
  66.    else do
  67.        body=found_these || NL
  68.        buttons=''
  69.        do i=1 to uc
  70.               if i<10 then 
  71.            shortcut='_'
  72.        else
  73.            shortcut=''
  74.            if i<=maxbut then buttons=buttons || shortcut || i || '|'
  75.            body=body || i || ') '
  76.            if length(url.i)<=wid then
  77.            body=body || url.i || NL
  78.        else
  79.            body=body || left(url.i,40) || '...' || right(url.i,wid-43) || NL
  80.            end /* do i=1 to uc */
  81.        buttons=buttons || '_Ok'
  82.        sel=rtezrequest(body,buttons,title,'rtez_defaultresponse=0' tags)
  83.        if sel>0 then do       
  84.        lst=show('P') || '  '
  85.        no_browser=1
  86.        if pos('MINDWALKER',lst)>0 then do
  87.           address 'MINDWALKER' 'OpenURL '|| url.sel
  88.           no_browser=0
  89.           end
  90.        if pos('VOYAGER',lst)>0 then do
  91.           address 'VOYAGER' 'OpenURL '|| url.sel
  92.           no_browser=0
  93.           end
  94.        if pos('IBROWSE',lst)>0 then do
  95.           address 'IBROWSE' 'GotoURL ' || url.sel
  96.           no_browser=0
  97.           end
  98.        if pos('AWEB',lst)>0 then do
  99.         address value substr(lst,pos('AWEB.',lst),6)        
  100.         'Open ' || url.sel
  101.               no_browser=0
  102.         end
  103.        if no_browser then do
  104.            address 'YAM'
  105.         buts="_Run browser|_Add URL to hotlist|_Exit script"
  106.         if ~exists(hotlist) then buts="_Run browser|_Exit script"
  107.         'Request "No browser is currently running!  What do you want to do?" "'buts'"' 
  108.         if result=0 then exit
  109.         if result=1 then
  110.                address command browser url.sel
  111.         else do
  112.             if ~open(6,hotlist,'r') | ~open(7,'t:gu.tmp','w') then do
  113.                 'Request "Could not write to hotlist" "_Ok"'
  114.                 exit
  115.                 end
  116.             do until upper(line)='<UL>' | eof(6)
  117.                 line=readln(6)
  118.                 call writeln(7,line)
  119.                 end
  120.             desc=rtgetstring(url.sel,desc_txt || url.sel,title,,tags)
  121.             if desc='' then exit
  122.             call writeln(7,'<LI><A HREF="'url.sel'">'desc'</A>')
  123.             do until eof(6)
  124.                 line=readln(6)
  125.                 if ~eof(6) then call writeln(7,line)
  126.                 end
  127.             call close(6)
  128.             call close(7)
  129.             address command 'copy' hotlist hotlist || '.old'
  130.             address command 'copy t:gu.tmp' hotlist
  131.             address command 'delete t:gu.tmp'
  132.             end
  133.         end
  134.        end /* if sel>0 then do */
  135.        end /* else */
  136.    end
  137. else
  138.    call rtezrequest(error_msg,,title,tags)
  139. exit
  140.  
  141. AddURL:
  142.   parse arg u
  143.   do i=1 to uc
  144.       if url.i=u then return
  145.       end
  146.   uc=uc+1
  147.   url.uc=u
  148. return
  149.